It is well known to control input/output devices directly by a computer. With the advent of microcomputers, control logic for controlling the operation of input/output hardware such as a display terminal is often implemented in the form of a programmed microcomputer. The programs written for microcomputers are usually written in machine language or in an assembly language which can be directly translated into machine language. Alternately, a program can be written in a higher level language and compiled on a larger computer into the machine level language of the microcomputer. As a result, the operation of the I/O device is relatively rigidly predetermined by the machine language program. Usually these machine language programs are difficult to modify and therefore modification of the operation of the input/output hardware is a task reserved for programmers trained in the hardware detail of the specific microprocessor being used. In the event that several input/output control microprocessors are connected in a system, and if these microprocessors are of different manufacture, making changes in the operation of the system to perform a different application is very difficult and requires a high level of detail knowledge.
Where the program is compiled on a larger computer, significant communication time will be required to transmit the microprogram to the microcomputer. Also modification of the operation of the I/O device to permit error recovery without restarting the entire operation is very difficult. Either, all of the error recovery must be predetermined in the microcomputer program or new programs must be transmitted from the host computer. For example, if a bank's customer has entered the account number, secret number, and amount of withdrawal, it would be advantageous to be able to instruct the customer to re-enter only one of these items if it was received in error at the host. The microcomputer program could be written to accomodate all anticipated error recovery situations, but even then it would be desirable to handle unanticipated situations from a manually attended station at the host computer. If machine level programs must be transmitted from the host computer to the microcomputer, human intervention into an interactive transaction being attempted at a remote cash issuing machine will be very complicated and time consuming.
It is also well known to program a computer in a higher level language such as APL, which is more readily understood by computer programmers and computer users. Each instruction in the higher level language is often interpreted by the computer into a sequence of simpler machine level instructions which are executed in order to execute the function called for by the higher level instruction. Another example of higher level instruction is a macro instruction, which again is interpreted into the sequence of lower level instructions required to execute the desired function. Whether the higher level instructions are interpreted as mentioned above, compiled, or assembled, the final sequence of machine instruction is defined by the original sequence of higher level instructions.
A small step in the direction of the instant invention takes the form of the execute instructions of IBM System 370 architecture and the IBM 3600 Finance Communication System. These instructions cause a different instruction, stored at a specified location, to be executed. The effect of an execute instruction is to cause another instruction to be executed. No provision has been made for allowing an entire program to be written in the form of execute instructions and, even if such were the case, use of one instruction to cause the execution of another would not yield the economy of the instant invention.
It has been found to be costly to implement high level languages such as APL, or macro-languages in microcomputers because the interpreting required for high level languages requires a large amount of read only memory. This overhead interpretation cost is further magnified by the fact that the operation of input/output hardware is not often changed in comparison to the amount of changes that are made in main computer programs. Accordingly, the burden of carrying the higher level language becomes a needless burden in between changes.
Lastly, it is known to have parameter tables in a remote terminal such as exist in the IBM 3624 cash issuing terminal. These tables store guidance display data and constants for use by branch on condition machine level program instructions. These tables, therefore, permit some variation in the execution of a machine level microprogram but do not permit basic revision of terminal operation from an operator at a control location.